在Linux中使用find命令行查找文件 |
您所在的位置:网站首页 › linux 命令搜索文件 › 在Linux中使用find命令行查找文件 |
find是一个基于条件机制递归过滤文件系统中对象的命令。使用find搜索文件系统中的文件或目录。使用-exec标志,可以在同一命令中找到并立即处理文件。 个人推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后在购买服务器。 按名称或扩展名查找Linux文件使用find命令行按名称或扩展名查找特定文件。下面的示例是在/home/username/中查到以.err结尾的所有文件: 代码语言:javascript复制find /home/username/ -name "*.err"常见的Linux查找命令和语法find 表达式采用以下形式: 代码语言:javascript复制find options starting/path expressionoptions属性将控制find进程的行为和优化方法。starting/path属性将定义find开始过滤的顶级目录。expression属性控制搜索目录层次结构以生成输出的测试。下面是示例命令: 代码语言:javascript复制find -O3 -L /var/www/ -name "*.html"此命令启用最大优化级别(-O3)并允许find遵循符号链接(-L)。在/var/www/下面的整个目录树中搜索以.html结尾的文件。 基本示例命令 描述 find . -name testfile.txt 在当前和子目录中找到名为testfile.txt的文件。 find /home -name *.jpg 在/home中查找所有以.jpg结尾的文件 find . -type f -empty 在当前目录中查找空文件。 find /home -user exampleuser -mtime 7 -iname ".db" 查找用户名为exampleuser的用户在过去7天内修改的所有.db文件(忽略文本大小写)。 查找选项和优化默认配置find将忽略快捷方式文件。如果要find跟随并返回符号链接,可以将-L选项添加到命令中,如上例所示。 find优化其过滤策略以提高性能。三个可供用户选择的优化级别被指定为-O1,-O2和-O3。在运行所有其他测试之前,-O1优化是默认值并强制find基于文件名进行过滤。 在-02级别上的优化优先考虑文件名过滤器,就像在-01中一样,然后在处理其他更占用资源的条件之前运行所有文件类型过滤。级别-03优化允许find执行最严格的优化,并根据相关费用和成功的可能性重新安排所有测试。 命令 描述 -O1 (默认)首先根据文件名过滤。 -O2 首先是文件名,然后是文件类型。 -O3 允许find根据资源和可能性的有效使用自动重新排序搜索。成功 -maxdepth X 搜索当前目录以及所有X级别的子目录。 -iname 搜索时不考虑文本情况。 -not 仅返回与测试用例不匹配的结果。 -type f 搜索文件。 -type d 搜索目录。 按修改时间查找文件find命令包含根据上次修改文件的时间过滤目录层次结构的功能: 代码语言:javascript复制find / -name "*conf" -mtime 7 find /home/exampleuser/ -name "*conf" -mtime 3第一个命令返回整个文件系统中所有文件的列表,这些文件以字符conf结尾并在过去7天内被修改。第二个命令过滤exampleuser用户的主目录,查找名称以conf字符结尾并在前3天内被修改的文件。 使用Grep根据内容查找文件该find命令只能根据文件名和元数据过滤目录层次结构。如果您需要根据文件内容进行搜索,请使用grep等工具。请考虑以下示例: 代码语言:javascript复制find . -type f -exec grep "example" '{}' \; -print这将搜索当前目录层次结构(.)中的每个文件(-type f),然后为每个满足条件的文件运行grep“example”命令。匹配的文件打印在屏幕上(-print)。花括号({})是查找匹配结果的占位符。{}用单引号(')括起来,以避免将格式不正确的文件名传递给grep。exec命令以分号(;)结束,分号应该转义(\;),以避免shell对其进行解释。 在执行-exec选项之前,这种命令可能已使用xargs命令生成类似的输出: 代码语言:javascript复制find . -type f -print | xargs grep "example"如何使用查找命令查找和处理文件exec选项对匹配find表达式的每个对象运行命令。考虑下面的例子:: 代码语言:javascript复制find . -name "rc.conf" -exec chmod o+r '{}' \;这将为命名为rc的文件过滤当前层次结构(.)中的每个对象。运行chmod o+r命令修改查找结果的文件权限。 与-exec一起运行的命令在find进程的根目录中执行。使用-execdir在匹配所在的目录中执行指定的命令。这可能会减轻安全问题,并为某些操作产生更理想的性能。 -exec或-execdir选项运行时没有进一步提示。如果您希望在采取行动之前得到提示,请将-exec替换为-ok或-execdir替换为-okdir。 如何在Linux命令行查找和删除文件警告 请谨慎使用此选项。 将-delete选项添加到匹配表达式的末尾,这样就能删除所有匹配的文件。请务必确定查找结果与您要删除的文件匹配。 在以下示例中,find查找从当前目录开始并完全递归到目录树中的层次结构中的所有文件。在此示例中,find将删除以.bak字符结尾的所有文件: 代码语言:javascript复制find . -name "*.bak" -delete总结怎样,你学会了嘛?赶快购买服务器尝试下吧! 想要学习更多相关知识,请访问腾讯云云+社区。 参考文献:《Find Files in Linux, Using the Command Line》 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |